<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 一个url到页面渲染完成发生了什么？
        
        https://www.baidu.com/  协议名  域名  需要注册

        // https 协议  192.168.110.15 IP地址     3000 8000 8080 （3000以下不要用）端口号
        https://192.168.110.11:3000
        
        DNS解析：将域名解析为ip地址
        走缓存
            浏览器DNS缓存
            本机的DNS缓存
            路由器DNS缓存
            网络运营商DNS缓存
            最终递归查询
        客户端和服务器建立连接：基于tcp/ip的三次握手 由客户端发起的
            ①客户端发起连接请求，携带SYN标识
            ②服务器接到客户端 带有SYN标识的请求，服务器就就告诉客户端来吧 ACK
            ③客户端确认SYN ACK 确认一下 却完毕后发送ACK 我去

        发送请求：请求报文
        返回响应 ：响应报文
        
        渲染页面：
        预解析
        将html标签解析DOM树
        将css样式解析CSSOM树
        将DOM树和CSSOM树结合render树
        遇见js 看是否修改结果样式，如果修改 重新构建DOM 或者CSSOM 重新结合 render树 
        重排重绘
        减少重排重绘
        每次重排 必然会导致重绘  
        重绘不一定会重排
        布局layout
        渲染页面  render

        客户端和服务器断开连接：基于TCP/IP协议的四次挥手
        断开连接既可以是服务器发起也可以是客户端发起
        ①当报文传输完毕后，客户端发起断开请求，携带FIN结束码 给服务器
        ②服务器收到FIN 询问真断开吗？发送一个ACK确认码
        ③服务器收到后再发送一个FIN结束码给客户端
        ④客户端确认断开 返回ACK确认码 



        web开发的本质
        客户端发送请求
        服务器处理请求
        返回响应 

        浏览器的组成
        人机交互（ui）
        网络请求
        渲染引擎（html,css）
        JavaScript引擎(解析JavaScript)
        数据存储（cookie localStorage sessionStorage）


        浏览器内核（浏览器渲染引擎、排版引擎、浏览器内核）
        chrome webkit(Blink)引擎
        ie     trident引擎
        FireFox  Geckoy内核
        Safari webkit内核
        opera Blink




        一个电脑上装多个node版本
        nvm :管理一台计算机上装多个node版本

        nvm version 查看nvm版本号
        nvm install latest 下载最新版本的node
        nvm install node@指定版本号 下载指定版本的node
        nvm list 显示当前电脑上有的node版本的列表
        nvm use node@版本号 切换到指定的node版本
        nvm uninstall node@版本号  卸载指定的node版本


        包管理器npm cnpm yarn cyarn
        npm 
        node自带npm
        npx从5.2版本后自带
        npm版本高于5.2
        npm install -g npx

        包 先下载
        开发环境下下载  npm i -D 包名  下载完再使用
        生产环境下下载  npm i -S 包名

        npx不用下载包，能直接用
        
        */
    </script>
</body>
</html>